package com.protocolterminal.function;

import com.protocolterminal.function.FrameFunction;

public class Check3761 implements CheckFrame {

	@Override
	public boolean Check(String frame) {
		// 不是合格的2进制内容
		if (frame.length() % 2 != 0) {
			return false;
		}

		// 判断基本长度
		if (frame.length() <= 14) {
			return false;
		}
		// 去掉前面非68字符
		while (!frame.substring(0, 2).equals("68")) {
			frame = frame.substring(2, frame.length());
			if (frame.length() == 0) {
				return false;
			}
		}

		// 验证，68，16
		if (!frame.substring(10, 12).equals("68")) {
			return false;
		}
		// 获取数据长度
		String slen = frame.substring(4, 6) + frame.substring(2, 4);
		int ilen = Integer.parseInt(slen, 16);
		ilen = ilen >> 2;
		// 判断帧是否完整
		if (frame.length() < 16 + ilen * 2) {
			return false;
		}
		// 验证cs
		FrameFunction frameFunction = new FrameFunction();
		String data = frame.substring(12, 12 + ilen * 2);
		if (!frame.substring(12 + ilen * 2, 12 + ilen * 2 + 2).equalsIgnoreCase(frameFunction.Cs(data))) {
			return false;
		}
		// 验证16
		if (!frame.substring(12 + ilen * 2 + 2, 12 + ilen * 2 + 4).equalsIgnoreCase("16")) {
			return false;
		}

		return true;
	}

}
